package com.example.accessibilitydemo

import android.accessibilityservice.AccessibilityService
import android.text.TextUtils
import android.view.accessibility.AccessibilityEvent
import android.view.accessibility.AccessibilityNodeInfo


class MyAccessibilityService : AccessibilityService() {

    /***
     *    无障碍辅助 相关研究
     *
     *    那个 xml 目录里面配置里面  description  这个字段也是需要string 目录才能够被识别。
     *
     *
     *    https://www.jianshu.com/p/e1ba386464ad  （原理分析）
     *
     *     这个类测试过，能够监听到自己app 里面的控件内容
     *
     *
     *
     *
     * */

    override fun onAccessibilityEvent(p0: AccessibilityEvent?) {

        try {
            //拿到根节点
            val rootInfo = rootInActiveWindow ?: return
            //开始找目标节点，这里拎出来细讲，直接往下看正文
            if (rootInfo.childCount != 0) {
                if (rootInfo == null || TextUtils.isEmpty(rootInfo.className)) {
                    return
                }
                //开始去找
              //  findByID(rootInfo, "com.tencent.mobileqq:id/chat_item_content_layout")
            }
        } catch (e: Exception) {
        }
    }

    override fun onInterrupt() {

    }




    private fun findByID(rootInfo: AccessibilityNodeInfo, text: String) {
        if (rootInfo.childCount > 0) {
            for (i in 0 until rootInfo.childCount) {
                val child = rootInfo.getChild(i)
                try {
                    if (child.findAccessibilityNodeInfosByViewId(text).size > 0) {
                        for (info in child.findAccessibilityNodeInfosByViewId(text)) {

//                            performClick(getClickable(info))
                            //模仿全局手势
//                        performGlobalAction(GLOBAL_ACTION_NOTIFICATIONS);
                        }
                    }
                } catch (e: NullPointerException) {
                }
                findByID(child, text) //递归一直找一层层的全部遍历
            }
        }
    }

}